package org.jsola.hr.dao;

import org.apache.ibatis.annotations.Param;
import org.jsola.hr.dto.ApplyToProgEmpeeInfoDTO;
import org.jsola.hr.entity.ApplyToProgDO;
import org.jsola.hr.vo.ApplyToProgVO;
import org.jsola.orm.mapper.IJsolaMapper;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @author zhr
 */
@Repository("hrApplyToProgDAO")
public interface IApplyToProgDAO extends IJsolaMapper<ApplyToProgDO> {

    /**
     * 根据业务方案id查询方案适用设置
     * @param busProgId 业务方案id
     * @param siteId    所属站点id
     * @return 方案适用设置信息详情
     */
    ApplyToProgVO selectByBusProgId(@Param(value = "busProgId") String busProgId,@Param(value = "siteId") String siteId);

    /**
     * 查询适用方案部门员工
     * @param busProgType 业务方案类型
     * @param siteId 站点id
     * @return 方案适用员工及部门
     */
    List<ApplyToProgEmpeeInfoDTO> getApplyToProgDepEmp(@Param(value = "busProgType") String busProgType , @Param(value = "siteId") String siteId, @Param(value = "companyId") String companyId);

    /**
     * 查询适用方案直接选中员工
     * @param busProgType 业务方案类型
     * @param siteId 站点id
     * @return 查询适用方案直接选中员工
     */
    List<ApplyToProgEmpeeInfoDTO> getApplyToProgEmp(@Param(value = "busProgType") String busProgType , @Param(value = "siteId") String siteId, @Param(value = "companyId") String companyId);

    /**
     * 查询适用方案岗位员工
     * @param busProgType 业务方案类型
     * @param siteId 站点id
     * @return 方案适用员工及部门
     */
    List<ApplyToProgEmpeeInfoDTO> getApplyToProgPosEmp( @Param(value = "busProgType") String busProgType , @Param(value = "siteId") String siteId, @Param(value = "companyId") String companyId);

    /**
     * 查询适用方案聘用形式员工
     * @param siteId
     * @return
     */
    List<ApplyToProgEmpeeInfoDTO> getApplyToProgEmployeeTypeEmp(@Param(value = "busProgType") String busProgType , @Param(value = "siteId") String siteId, @Param(value = "companyId") String companyId);

    /**
     *
     * @param depIds 部门列表
     * @param posIds 岗位列表
     * @param employeType 员工类型泪飙
     * @return
     */
    List<ApplyToProgVO> getProgConflictSelectCondition(@Param(value = "depIds") List<String> depIds,@Param(value = "posIds") List<String> posIds, @Param(value = "employType") List<String> employeType,
                                                       @Param(value = "siteId")  String siteId, @Param(value = "busProgType")  String busProgType,@Param(value = "busProgId") String busProgId, @Param(value = "companyId") String companyId );

}

